- Опубликовано
Типы и интерфейсы. Часть 4. Дженерики
- Автор
- Имя
- Счастливый тимлид | ♥ Frontend
- Telegram
- Счастливый тимлид | ♥ Frontend2204 подписчика692 поста
Типы и интерфейсы. Часть 4. Дженерики
Что такое дженерик? По факту — это инструмент языка TypeScript для описания структур данных, в которых тип каких-либо параметров стуктуры может задаваться из вне.
Капец, хотел написать попроще, получилось посложнее. Еще в интернете про них пишут такое:
Дженерики, или Generic Types, — обобщенные типы. Они нужны для описания похожих, но отличающихся какими-то характеристиками типов.
Дженерики, в целом, достойны отдельной статьи. Здесь же разберем особенности в рамках сравнения типов и интерфейсов.
Возьмем привычные нам AInt и AType, назовем их DInt и DType соответственно, и сделаем так, чтобы тип параметра second можно было задавать.
typescript// Определяем интерфейс interface DInt<ExternalType> { first: boolean; second: ExternalType; }
жны указывать тип, которому будет соответствовать параметр second.typescript// Определяем тип type DType<ExternalType> = { first: boolean; second: ExternalType; } Здесь мы создали переменную типа ExternalType. При создании константы с типом DInt или DType мы дол
Если его не передать — будет ошибка. Если фактическое значение не будет совпадать с указанным, то тоже будет ошибка. Посмотрите:
typescript// Будет ошибка: Generic type 'DInt<ExternalType>' requires 1 type argument(s) const dIntError: DInt = { first: true, second: 15, }
typescript// Так правильно const dInt: DInt<number> = { first: true, second: 15, }
typescript// Так будет ошибка: The expected type comes from property 'second' which is declared here on type 'DType<number>' const dType: DType<number> = { first: true, second: 'bla bla', }
typescript// Так правильно const dType: DType<string> = { first: true, second: 'bla bla', }
На примерах видно, что определение и использование различается только на уровне определения ровно настолько, насколько в принципе различаются type и interface.
Счастливый тимлид | ♥ Frontend
2204 подписчика
692 поста
Предыдущий пост
- Опубликовано
Плохие руководители и как найти хорошего тимлида
Опыт работы с плохими руководителями и как найти хорошего тимлида
Следующий пост
- Опубликовано
Читаю канал Rational Answer. И там Паша
как найти ментора по фронтенду и получить консультацию
Закрепленные
Из подборки #frontend
- Опубликовано
Как сделать страницу с халявой и промокодами
Как создать страницу с промокодами и халявой на Astro, GitHub Actions и Markdown
- Опубликовано
Встречайте геймификацию в комментах
Как добавить геймификацию в комментарии канала: бот начисляет респекты за лайки
- Опубликовано
Когда проще завайбкодить чем нагуглить
как завайбкодить вместо гуглить: дыхание по квадрату, anti‑gravity инструмент и бесплатный курсор
- Опубликовано
Телеграмовский сосун (или какун, как правильно?)
Телеграмовский сосун суммирует мой лонгрид – стоит ли публиковать полную версию?
- Опубликовано
Итоги
Итоги года блога тимлида: количество подписчиков, менторство, сообщество ИТ‑блогеров, планы на 2025
- Опубликовано
Поделитесь вашими любимыми мемами уходящего года
Поделитесь любимыми мемами уходящего года
Свежие посты
- Опубликовано
Как сделать страницу с халявой и промокодами
Как создать страницу с промокодами и халявой на Astro, GitHub Actions и Markdown
- Опубликовано
Встречайте геймификацию в комментах
Как добавить геймификацию в комментарии канала: бот начисляет респекты за лайки
- Опубликовано
Когда проще завайбкодить чем нагуглить
как завайбкодить вместо гуглить: дыхание по квадрату, anti‑gravity инструмент и бесплатный курсор
- Опубликовано
#тимлид
+1
весёлая дискуссия в канале Деплой о резюме
как вести себя в обсуждении резюме коллег в канале Деплой
- Опубликовано
Жизнь по скраму
жизнь по скраму как планировать личные задачи, повысить продуктивность и избежать выгорания
- Опубликовано
не забудь завести будильник
как не забыть завести будильник
- Опубликовано
Каникулы в регионе без интернета
Как справиться с удалённой работой без интернета в региональном АСДЛ?
- Опубликовано
Телеграмовский сосун (или какун, как правильно?)
Телеграмовский сосун суммирует мой лонгрид – стоит ли публиковать полную версию?


